package com.banconacion.dao.base.mysql;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.banconacion.bean.ClienteDTO;
import com.banconacion.dao.ClienteDAO;
import com.banconacion.util.MySqlDataSource;

public class MySqlClienteDAO implements ClienteDAO {


    /* (non-Javadoc)
     * @see aprendamos.java.dao.ClienteDAO#listaPorNombre(java.lang.String)
     */
    public List<ClienteDTO> listaPorNombre(String vnombre) throws Exception {

        List<ClienteDTO> clientes = new ArrayList<ClienteDTO>();

        //Obtenemos una conexion
//        Connection cn = MySqlDataSource.obtenerConexion();
//
//        //Definimos la sentencia a ejecutar
//        String sql = "select nombre, sueldo, fecnac, usuario, clave "
//                + " from tbcliente where nombre like ?";
//
//        //preparamos la sentencia para ser ejecutada
//        PreparedStatement pst = cn.prepareStatement(sql);
//
//        //asignamos valores a la interrogante
//        pst.setString(1, "%" + vnombre + "%");
//
//        //ejecutamos la sentencia El executeQuery retorna un resultset
//        pst.executeQuery();
//
//        //ejecutamos
//        ResultSet rs = pst.executeQuery();
//
//        while (rs.next()) {
//            ClienteDTO cli = new ClienteDTO();
//
//            cli.setNombre(rs.getString(1));
//            cli.setSueldo(rs.getDouble(2));
//            cli.setFecnac(rs.getDate(3));
//            cli.setUsuario(rs.getString(4));
//            cli.setClave(rs.getString(5));
//
//            clientes.add(cli);
//        }
//
//        cn.close();

        return clientes;

    }

    /* (non-Javadoc)
     * @see aprendamos.java.dao.ClienteDAO#registraCliente(aprendamos.java.bean.ClienteDTO)
     */
    public void registraCliente(ClienteDTO objCli) throws Exception {

        //1Obtenemos una conexion
//        Connection cn = MySqlDataSource.obtenerConexion();
//
//        //Definimos la sentencia a ejecutar
//        String sql = "insert into tbcliente(nombre, sueldo, sexo, fecnac, usuario, clave)"
//                + " values (?,?,?,?,?,?)";
//
//        PreparedStatement pst = cn.prepareStatement(sql);
//
//        pst.setString(1, objCli.getNombre());
//        pst.setDouble(2, objCli.getSueldo());
//        pst.setString(3, objCli.getSexo());
//
//        java.sql.Date bdfecha = new java.sql.Date(objCli.getFecnac().getTime());
//
//        pst.setDate(4, bdfecha);
//        pst.setString(5, objCli.getUsuario());
//        pst.setString(6, objCli.getClave());
//
//        pst.executeUpdate();
//
//        cn.close();

    }

    /* (non-Javadoc)
     * @see aprendamos.java.dao.ClienteDAO#buscaClientePorUsuario(java.lang.String)
     */
    public ClienteDTO buscaClientePorUsuario(String vusuario) throws Exception {

        ClienteDTO objCli = null;
//
//        // obtenemos la conexion de b.d.
//        Connection cn = MySqlDataSource.obtenerConexion();
//
//        try {
//
//            String sql = "select usuario,clave,nombre,sexo,"
//                    + " fecnac,sueldo from tbcliente where usuario = ?";
//
//            // preparamos la sentencia
//            PreparedStatement pst = cn.prepareCall(sql);
//
//            // asignamos valor a la interrogante
//            pst.setString(1, vusuario);
//
//            // ejecutamos la sentencia
//            ResultSet rs = pst.executeQuery();
//
//            if (rs.next()) {
//
//                objCli = new ClienteDTO();
//
//                objCli.setUsuario(rs.getString(1));
//                objCli.setClave(rs.getString(2));
//                objCli.setNombre(rs.getString(3));
//                objCli.setSexo(rs.getString(4));
//                objCli.setFecnac(rs.getDate(5));
//                objCli.setSueldo(rs.getDouble(6));
//
//            }
//
//
//            cn.close();
//
//
//        } catch (SQLException e) {
//            // TODO Auto-generated catch block
//            e.printStackTrace();
//        }

        return objCli;
    }

    /* (non-Javadoc)
     * @see aprendamos.java.dao.ClienteDAO#modficarCliente(aprendamos.java.bean.ClienteDTO)
     */
    public void modficarCliente(ClienteDTO objCli) throws Exception {
//        //1Obtenemos una conexion
//        Connection cn = MySqlDataSource.obtenerConexion();
//
//        //Definimos la sentencia a ejecutar
//        String sql = "update  tbcliente set nombre = ?, "
//                + " sueldo = ?,  sexo=?, fecnac=?,  clave=?, usuario=? where usuario=?";
//
//        PreparedStatement pst = cn.prepareStatement(sql);
//
//        pst.setString(1, objCli.getNombre());
//        pst.setDouble(2, objCli.getSueldo());
//        pst.setString(3, objCli.getSexo());
//
//        java.sql.Date bdfecha = new java.sql.Date(objCli.getFecnac().getTime());
//
//        pst.setDate(4, bdfecha);
//
//        pst.setString(5, objCli.getClave());
//        pst.setString(6, objCli.getUsuario());
//        pst.setString(7, objCli.getSavaUsuario());
//
//        pst.executeUpdate();
//
//        cn.close();


    }

    /* (non-Javadoc)
     * @see aprendamos.java.dao.ClienteDAO#eliminarCliente(java.lang.String)
     */
    public void eliminarCliente(String vusuario) throws Exception {
        //1Obtenemos una conexion
        Connection cn = MySqlDataSource.obtenerConexion();

        //Definimos la sentencia a ejecutar
        String sql = "delete  from tbcliente where usuario='" + vusuario + "'";

        PreparedStatement pst = cn.prepareStatement(sql);

        pst.executeUpdate();

        cn.close();

    }

    public ClienteDTO buscarClienteporRuc(String ruc) throws Exception {
        ClienteDTO cli = null;
        Connection cn = MySqlDataSource.obtenerConexion();
        String sql = "SELECT * FROM cliente where rucCliente = ?";
        
        PreparedStatement pst = cn.prepareStatement(sql);
        pst.setString(1, ruc);
        pst.executeQuery();
        ResultSet rs = pst.executeQuery();

        while (rs.next()) {
            cli = new ClienteDTO();

            cli.setCodigo(rs.getInt(1));
            cli.setTipoPersona(rs.getString(2));
            cli.setNombre(rs.getString(3));
            cli.setApellidoPaterno(rs.getString(4));
            cli.setApellidoMaterno(rs.getString(5));
            cli.setDni(rs.getString(6));
            cli.setRuc(rs.getString(7));
            cli.setTelefono(rs.getString(8));
            cli.setEmail(rs.getString(9));
            cli.setDireccion(rs.getString(10));
            cli.setFechaRegistro(rs.getDate(11));
            cli.setFechaActualizacion(rs.getDate(12));
            cli.setCodigoDistrito(rs.getInt(13));
            cli.setChequera(rs.getBoolean(14));
        }
        return cli;
    }
}
